package com.itheima.zhaohang.androidjs;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.JavascriptInterface;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWebView = (WebView) findViewById(R.id.luandiao);
        //先设置js可用
        mWebView.getSettings().setJavaScriptEnabled(true);
        //设置只能在本页调动
        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {


                return true;
            }
            //当加载完成后，设置可以点击js
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                addItemOnClick();
            }
        });
        //等Android调完js后，就该js调用java,需要接口对象
        mWebView.addJavascriptInterface(new JsCallAndroid() {

            @JavascriptInterface
            @Override
            public void openImage(String uri) {

                Intent intent = new Intent(MainActivity.this,ShownJs.class);
                intent.putExtra("uri",uri);
                startActivity(intent);

            }
        },"imagelistner");

        }
        //设置android调用js
    private void addItemOnClick() {

        //android调用js代码，只要前缀是javascript:就是java调用js
                            //在js代码中有个自己定义的方法名function方法名
        mWebView.loadUrl("javascript:(function(){"
                //定义一个变量objs，document元素中，从当前的ByTagName标签中拿取标签名字
                + "var objs = document.getElementsByTagName(\"img\"); "
                //将所有拿到的数组进行遍历
                + "for(var i=0;i<objs.length;i++)  " + "{"
                //给图片设置点击事件，再设置一个方法
                + "    objs[i].onclick=function()  " + "   " + " {  "
                //设置方法的作用就是在界面上展示图片，此处src是地址
                + "        window.imagelistner.openImage(this.src);  "
                + "    }  " + "}" + "})()");



    }
    public interface JsCallAndroid{

        //这里对应的是每张图片的点击事件
        public void openImage(String uri);


    }
}
